// 父类
function Person() {
  this.name = "yz";
  this.friends = [];
}
Person.prototype.eating = function() {
  console.log(this.name + " eating");
}
// 子类
function Student() {
  // 学号
  this.sno = 111
}

// 原型链实现
Student.prototype = new Person();
Student.prototype.studying = function() {
  console.log(this.name + " studying");
}

var stu = new Student();
console.log(stu.name);
stu.eating();
console.log(Person.prototype.constructor);


// 原型链实现继承的弊端
// 1.打印对象，继承的属性是看不到的
console.log(stu);

// 2.创建两个stu对象
var stu1 = new Student()
var stu2 = new Student()
// 获取引用，修改引用的值，会相互影响
stu1.friends.push("kobe");
console.log(stu1.friends);
console.log(stu2.friends);

// // 3.在前面实现类的过程中都没有传递参数

// 强调：借用构造函数也是有弊端的
// 1.Person函数被调用两次
// 2.stu对象上会多出属性，但是这些属性是没有必要存在的


